import Mock from 'mockjs'
const Random = Mock.Random
const data = Mock.mock({
  'list|5': [{
    'id|+1': 1,
    'categoryId|+1': ['01', '02', '03', '04','0401'], // 分类id自增
    'categoryName': function () {
      let name = Random.ctitle(2, 4)
      if (this.categoryId.startsWith('03')) {
        name = '  ' + name
      }
      return name
    },
    'remark': function () {
      return Random.ctitle(2, 4)
    },
    'status': function () {
      return Random.pick([0, 1])
    },
    'operator': function () {
      return Random.cname()
    },
    'operateDate': function () {
      return Random.date()
    }
  }]
})


//初始化数据
Mock.mock('/api/data', 'get', () => {
  return {
    code: 200,
    message: 'success',
    data: data.list
  }
})
// 删除数据
Mock.mock('/api/delete', 'post', (options) => {
  const params = JSON.parse(options.body)
//判断是不是数组
if (Array.isArray(params)) {
  // 是数组
  params.forEach(el => {
  const id = el
  // 过滤掉被删除的数据
  for (let i = 0; i < data.list.length; i++) {
    if (id === data.list[i].id) {
      data.list.splice(i, 1)
      break
    }
   }
  });
  return {
    code: 200,
    message: '删除成功!'
  }
} else {
  const id = params.id
  // 过滤掉被删除的数据
  for (let i = 0; i < data.list.length; i++) {
    if (id === data.list[i].id) {
      data.list.splice(i, 1)
      break
    }
  }

  return {
    code: 200,
    message: '删除成功!'
  }
}
  
})
// 增加数据
Mock.mock(/\/api\/add/, 'post', (options) => {
  // 解析请求中的数据
  const {categoryId, categoryName, remark,addfather} = JSON.parse(options.body)
  // 生成新的对象，加入到列表中
  const index = data.list[data.list.length - 1].id

  let str=null
  let arr= false
  //判断有没有重复
  data.list.forEach(el => {
    if (el.categoryId==categoryId) {
      arr=true
      
    } 
  });
  if(addfather){
   if (arr) {
       return {
          status: 'error',
          message: '改分类id已分配',
      }
    }
  }
  

  data.list.forEach(el => {
    if (!addfather) {
      if (!el.categoryId.slice(3, 4)) {
        str=categoryId+"0"+1
      } else {
        let num = parseInt(str) + 1;
        console.log(num,8888888);
        str = num.toString().padStart(4, "0");
      }
    }else {
      console.log(categoryId,"id");
      str = categoryId
    }
  });

  data.list.push({
    id: index + 1,
    categoryId:str,
    categoryName,
    remark,
    status: Mock.Random.pick([0, 1]),
    operator: Mock.Random.cname(),
    operateDate: Mock.Random.date(),
  })

  // 返回成功信息
  return {
    status: 'success',
    message: '添加成功',
  }
})
//查询
Mock.mock(/\/api\/search\/*/, 'get', (options) => {
  const categoryId = options.url.replace('/api/search/', '')

  // 如果传入的 categoryId 为空字符串，则返回所有数据
  if (categoryId === '') {
    return {
      status: 'success',
      message: '查询成功',
      data: data.list,
    }
  }

  // 在 mock 数据中查找所有符合条件的数据
  const result = data.list.filter((item) => item.categoryId.toString().startsWith(categoryId.toString()))

  return {
    status: 'success',
    message: '查询成功',
    data: result,
  }
})

//修改内容
Mock.mock(/\/api\/edit\/\d+/, 'post', (options) => {
  // 解析接收到的请求参数
  const { categoryId, categoryName, remark } = JSON.parse(options.body)
  const itemId = options.url.match(/\d+/)[0]

  // 在 mock 数据中查找该 ID 对应的对象，并更新数据
  const itemIndex = data.list.findIndex((item) => item.id === +itemId)
  if (itemIndex < 0) {
    return {
      status: 'error',
      message: '该分类不存在',
    }
  }
let arr= false
  data.list.forEach(el => {
    if (el.id!=itemId) {
      console.log(el.id);
       if ( el.categoryId===categoryId) {
         arr=true
      }
    } 
    
  });
  if (arr) {
    return {
        status: 'error',
        message: '改分类id已分配',
   }
 }




  const newItem = { ...data.list[itemIndex], categoryId, categoryName, remark }
  data.list.splice(itemIndex, 1, newItem)

  return {
    status: 'success',
    message: '修改成功',
  }
})
//修改状态
Mock.mock(/\/api\/update\/\d+/, 'post', (options) => {
  // 解析接收到的请求参数
  const { status } = JSON.parse(options.body)
  console.log(options);
  const itemId = options.url.match(/\d+/)[0]

  // 在 mock 数据中查找该 ID 对应的对象，并更新状态
  const itemIndex = data.list.findIndex((item) => item.id === +itemId)
  if (itemIndex < 0) {
    return {
      status: 'error',
      message: '该分类不存在',
    }
  }
  const newItem = { ...data.list[itemIndex], status }
  data.list.splice(itemIndex, 1, newItem)

  return {
    status: 'success',
    message: '修改成功',
  }
})


